#include <iostream>
#include <time.h>
#include <stdlib.h>

using namespace std;

template <class T>
class Juego_vida{
  public:
    Juego_vida(int fil,int col):fi(fil),co(col)
    {
       mat= new T*[fi];
       for(int i=0;i<fi;i++)
       {
           mat[i]=new T[co];
       }
    };

    void initialize()
    {
      srand(time(NULL));
      for(int i=0;i<fi;i++)
      {
        for(int j=0;j<co;j++)
        {
            int g=rand()%2;
            if(g==0)
            {
                mat[i][j]='.';
            }
            else
            {
                mat[i][j]='*';
            }
        }
      }
    };

    void print()
    {
       for(int i=0; i<fi; i++)
       {
          for(int j=0; j<co; j++)
          {
            cout << mat[i][j];
          }
          cout << endl;
       }
    };

    int count_neighbors(int i,int j)
    {
    };

    void iterate()
    {
       int** mat2= new T*[fi];
       for(int i=0;i<fi;i++)
       {
           mat2[i]=new T[co];
       }
       for(int i=0; i<fi; i++)
       {
          for(int j=0; j<co; j++)
          {
              if(count_neighbors(i,j)<2)
              {
                  mat2='.';
              }
              else if(count_neighbors(i,j)==3)
              {
                  mat2='*';
              }
              else
              {
                  mat2='.';
              }
          }
       }
       for(int i=0; i<fi; i++)
       {
          for(int j=0; j<co; j++)
          {
             mat[i][j]=mat2[i][j];
          }
       }
    };

    void simulate_life(int count)
    {
        for(int i=0; i<count; i++)
        {
            print();
            iterate();
        };
    }
  private:
    T** mat;
    int* posic;
    int fi;
    int co;

};


int main()
{
    Juego_vida <char> prueb(8,8);
    prueb.initialize();
    prueb.print();
    return 0;
}
